package com.ruoyi.safe.service;

import com.ruoyi.safe.domain.BizDutyRegion;
import com.ruoyi.safe.domain.dto.ProjectUserAndSuperiorsUserVO;
import com.ruoyi.safe.domain.vo.BizDutyRegionVO;
import com.ruoyi.safe.domain.vo.ListRequestVo;
import com.ruoyi.safe.domain.vo.ManageUserVO;

import java.util.List;

/**
 * 责任区域Service接口
 *
 * @author buxi
 * @date 2023-11-11
 */
public interface IBizDutyRegionService
{
    /**
     * 查询责任区域
     *
     * @param id 责任区域主键
     * @return 责任区域
     */
    public BizDutyRegion selectBizDutyRegionById(Long id);
    /**
     * 查询自身和下级的所有责任区域ID集合
     *
     * @param id 责任区域主键
     * @return 自身和下级的所有责任区域ID集合
     */
    public Long[] selectSelfAndChildrenBizDutyRegionIdsById(Long id);
    /**
     * 查询责任区域列表
     *
     * @param bizDutyRegion 责任区域
     * @return 责任区域集合
     */
    public List<BizDutyRegion> selectBizDutyRegionList(BizDutyRegion bizDutyRegion);
    /**
     * 查询责任区域列表VO
     *
     * @param bizDutyRegion 责任区域
     * @return 责任区域集合
     */
    public List<BizDutyRegionVO> selectBizDutyRegionListVO(BizDutyRegion bizDutyRegion);

    /**
     * 新增责任区域
     *
     * @param bizDutyRegion 责任区域
     * @return 结果
     */
    public int insertBizDutyRegion(BizDutyRegion bizDutyRegion);

    /**
     * 修改责任区域
     *
     * @param bizDutyRegion 责任区域
     * @return 结果
     */
    public int updateBizDutyRegion(BizDutyRegion bizDutyRegion);

    /**
     * 批量删除责任区域
     *
     * @param ids 需要删除的责任区域主键集合
     * @return 结果
     */
    public int deleteBizDutyRegionByIds(Long[] ids);

    /**
     * 删除责任区域信息
     *
     * @param id 责任区域主键
     * @return 结果
     */
    public int deleteBizDutyRegionById(Long id);
    int move(int moveType,Long id);

    ManageUserVO selectBizDutyRegionByIdAndProjectId(ListRequestVo listRequestVo);

    /**
     * 查询上级领导
     */
    ProjectUserAndSuperiorsUserVO higherAuthoritiesUsers(ListRequestVo listRequestVo);
}
